//
//  LZTStatusListViewModel.swift
//  LZTWeibo
//
//  Created by Yin jianxun on 16/8/13.
//  Copyright © 2016年 YinJianxun. All rights reserved.
//

import UIKit

class LZTStatusListViewModel: NSObject {
    
    //保存 微博数据的数组
    lazy var dataArray: [LZTStatusViewModel] = [LZTStatusViewModel]()
    
}

extension LZTStatusListViewModel {
    
    //请求数据
    //请求 首页数据
    //参数 isPullUp 是否是 上啦加载更多
    func loadData(isPullUp: Bool, finish:(isSuccess: Bool)->()) {
        
        //微博接口
        var sinceId: Int64 = 0
        var maxId: Int64 = 0
        
        //
        if isPullUp {
            
            //上拉加载更多
            maxId = dataArray.last?.statusModel?.id ?? 0
            
            if maxId > 0 {
                maxId -= 1
            }
            
        }else {
            
            //下拉刷新
            sinceId = dataArray.first?.statusModel?.id ?? 0
            
        }
        
        //使用 封装的数据处理类进行数据的处理
        LZTStatusDAL.checkOutCche(sinceId, maxId: maxId) { (res) in
            
            guard let r = res else {
                return
            }
            
            //代表获取到数据 不论本地还是网络获取
            //创建临时可变数组
            var tmpArray: [LZTStatusViewModel] = [LZTStatusViewModel]()
            
            //遍历数组 res
            for dic in r {
                
                let status = LZTStatusModel(dict: dic)
                let statusViewModel = LZTStatusViewModel(statusModel: status)
                tmpArray.append(statusViewModel)
            }
            
            //判断上啦或者下拉来决定数组中请求数据的顺序
            if isPullUp {
                
                //上拉：加载更多-新获取数据加在 已经加载完毕数据的后面
                self.dataArray = self.dataArray + tmpArray
                
            }else {
                //下拉：刷新-新数据（其实是之前已经展示过的老数据）的后面加上 已经加载完毕的数据
                self.dataArray = tmpArray + self.dataArray
            }
            //告知外界 请求数据成功
            finish(isSuccess: true)
            
        }
        
        
//        LZTNetworkTools.sharedTools.homeLoadData(sinceId, maxId: maxId, success: { (response) in
//            
//            //判断response的正确性 并判断response中返回值可否转成数组
//            guard let res = response?["statuses"] as? [[String: AnyObject]] else {
//                finish(isSuccess: false)
//                return
//            }
//            
//            //保存微博数据 用户缓存数据
//            LZTStatusDAL.saveCache(res)
//            
//            //创建临时可变数组
//            var tmpArray: [LZTStatusViewModel] = [LZTStatusViewModel]()
//            
//            //遍历数组 res
//            for dic in res {
//                
//                let status = LZTStatusModel(dict: dic)
//                let statusViewModel = LZTStatusViewModel(statusModel: status)
//                tmpArray.append(statusViewModel)
//            }
//            
//            //判断上啦或者下拉来决定数组中请求数据的顺序
//            if isPullUp {
//                
//                //上拉：加载更多-新获取数据加在 已经加载完毕数据的后面
//                self.dataArray = self.dataArray + tmpArray
//                
//            }else {
//                //下拉：刷新-新数据（其实是之前已经展示过的老数据）的后面加上 已经加载完毕的数据
//                self.dataArray = tmpArray + self.dataArray
//            }
//            
//            //告知外界 请求数据成功
//            finish(isSuccess: true)
//
//            }) { (error) in
//                
//                finish(isSuccess: false)
//                print("请求失败\(error)")
//        }
    }
}